package com.cpp.db;

import java.io.Serializable;

/**
 * 查询结果集中的一行。模拟ResultSet的接口。
 * @author lighthu
 */
public class ResultRow implements Serializable {
	
    private static final long serialVersionUID = 1L;
    private Object[] rowData;
	
	/**
	 * Constructor.
	 * @param cols 数据列数
	 */
	public ResultRow(int cols) {
		rowData = new Object[cols];
	}
	
	/**
	 * 设置一列的值。
	 * @param index 列号，从1开始
	 * @param value 列值
	 */
	public void setColumn(int index, Object value) {
		rowData[index - 1] = value;
	}
	
	/**
	 * 取得一列的int值。
	 * @param index 列号，从1开始
	 */
	public int getInt(int index) {
		Object val = rowData[index - 1];
		if (val instanceof Integer) {
			return ((Integer)val).intValue();
		} else if (val instanceof Long) {
			return ((Long)val).intValue();
		} else if (val instanceof String) {
			return Integer.parseInt((String)val);
		} else if (val instanceof Double) {
            return ((Double) val).intValue();
        } else {
			throw new IllegalArgumentException();
		}
	}
	
	/**
	 * 取得一列的String值。
	 * @param index 列号，从1开始
	 */
	public String getString(int index) {
		if (rowData[index - 1] == null) {
			return "";
		}
		if (rowData[index - 1] instanceof String) {
			return (String)rowData[index - 1];
		}
		return rowData[index - 1].toString();
	}
	
	/**
	 * 取得一列的日期值。
	 */
	public java.util.Date getDate(int index) {
		return (java.util.Date)rowData[index - 1];
	}
	
	/**
	 * 取得一列的值。
	 * @param index 列号，从1开始
	 */
	public Object getObject(int index) {
		return rowData[index - 1];
	}
}
